(inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

makefeedmap (unofficial)

最終更新 03/12/08 10:53:33
Count.cgi(since 1998/5/30)

makefeedmap って何

ニュースの転送経路を図示する道具。 小野秀貴さん が作られた。

情報の流れを非常に大まかに書くと

newsfeeds  →  tst  → tst_out  → makefeedmap
                   db          text             gif
となる。
表示例 http://www.ayamura.org/netnews/ feedmap-980514.gif

(inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

資料

makefeedmap を作られた小野さんによるもの
http://www.tamaru.kuee.kyoto-u.ac.jp/~ono/tools/makefeedmap/
あやむらさんのネットニューズ
http://www.ayamura.org/netnews/
(inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

材料

Perl5
以下のものは Perl5 で書かれているので必要
GD ( GD-1.18.tar.gz)
Graphich Database, Perl で利用出来る Library
/usr/local/lib/perl5/site_perl/GD.pm などに入る
ftp://ftp.uwsg.indiana.edu/pub/perl/CPAN/modules/by-module/GD/

最近 (2000/07/23) 同じことを繰返しているが、GD-1.30 だと libgd が 必要で、それは libpng, jpeg, などが必要となっている。僕は古い 1.18 を再び使ってしまった。

time make (NetBSD/SS-10)
94.306u 10.329s 2:06.83 82.4%   0+0k 665+571io 696pf+0w
collect-sw (の中から tst と tst_out)
newsfeeds から呼ばれて db (database) を作成するものと
その db から文字形式を生成するものが含まれている。
ftp://ftp.xlink.net/pub/news/docs/ collect-sw.tar.gz
中身は次の六点。 README check-in collect locations tst tst_out このうち必要なものは tst と tst_out だけ。
  • tst newsfeed から呼んで database を作成する
  • tst_out 定期的に呼ばれて
    1. database を作業領域に移動し (但し -n を付けると、これは飛ばす)
    2. 文字形式を生成する。
  • makefeedmap-1.4
    文字形式から GIF 形式の図を生成する
    http://www.tamappru.kuee.kyoto-u.ac.jp/~ono/tools/makefeedmap/ makefeedmap 1.4
    (updated 96/12/19 JST)
    (inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

    準備

    その他、次のことを決めておく
    tst/tst_out/makefeemap の位置
    実行形式をどこに置くか
    多分僕なら (inn-2 からは) 直接 /usr/local/news/bin (これは path に入っているだろうし) そうでないなら /usr/local/news/bin/makefeedmap の下
    database をどこに置くか
    newsfeeds から作るもの ( $db = $db1/testdb )
    tst の作業用 ( $dbp2 = directory )
    gif の置き場
    が必要。複数の図を作ろうとすると、$dbp2 はそれぞれ 別に用意する必要があると思う。
    どのような瀕度で図を更新するか
    も考えておいた方がいい。多分一日一回だと思うが、流量が少ない と一週間・一か月ということも考えられる
    どこに図を置くか
    これも(後でも良いが)決めておく。 たいていのところでは、http://..../netnews/index.html から直接 見えるようになっている気がする。
    (inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

    設定

    次のようになっているものを変更する。

    tst $db = "/var/log/news/tstdb"; newsfeeds から書くところ tst_out $dbp1 = "/usr/local/news/log/"; 入力 (ここからdb を持出す) $dbp2 = "/usr/local/news/log/db/"; 作業入力位置 (ここに一度置いて) $dbnam = "tstdb"; 作業入力名前 $db = $dbp2.$dbnam; 作業入力 PATH (変更不要) $resultfile = $dbp2 . "tstdata"; 出力先(変更不要) $tries = 10; (変更不要) $cflush="/usr/local/news/inn/bin/ctlinnd flush"; (inn に合わせる) $host='swidir.switch.ch' 自分の機械の名前
    (inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

    個人的変更

    しかし tst については 引数を見るように変更した方がいいと思う。 また実は名前も変更して使っている (collect-path)。 また tst_out について、 設定を引数で指定した名前から読むように 変更した このやり方だと
    collect-path /var/log/news/fj/tstdb のように起動したり(newsfeeds にそう書く)
    tst_out      /var/log/news/fj/config のように起動する。
    
    
    (inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

    動作確認 その一 tst = collect-path

    (記事を読んで *.db を作る)
    保存先の directory 下の例で言えば /var/log/collect-path を作っておいて
    cat (article) | /usr/local/news/bin/collect-path /var/log/collect-path/fj
    のように流し込んで見る。この場合で言えば
    /var/log/collect-path/fj に 0 でない *.dir, *.pag か *.db が出来ていれ ば良い。

    (inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

    newsfeeds に書く

    newsfeeds
    FJ:!*,fj.*:Tc,WH:/usr/local/news/bin/collect-path /var/log/collect-path/fj JAPAN:!*,japan.*:Tc,WH:/usr/local/news/bin/collect-path /var/log/collect-path/japan
    あるいは二つ一緒にしてしまってもいい TST:!*,fj.*,japan.*:Tc,WH:/usr/local/news/bin/collect-path /var/log/collect-path/tst newsfeeds を変更したら、 inncheck newsfeeds ctlinnd reload newsfeeds '' しておく
    tst_out の中に TST という名前が(固定 = hardcode で) 書いてあって、 それを ctlinnd flush しているので、 newsfeeds に TST でない、上のような FJ/JAPAN などという字を使った時は その部分を変更する必要がある。そうでないと No such site (そのような名前のものはないから flush 出来ないよ) という字を見てしまう。

    (inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

    動作確認 その二 tst_out 【データべースから文字形式へ】

    一回目なら
    (/usr/local/news/bin/) tst_out -f /var/log/makefeedmap/fj/tst_out.config
    として見る。-f は必ず付ける。そうしないと(作った人の関係の) 遠くの方 ( collect-stats$snert.pilhuhn.de ) にメールを出してしまう。
    ここでの引数は個人的変更をして読むようにした設定譜の指定。

    あるいは
    cp /var/log/collect-path/fj* /var/log/makefeedmap/fj としてから 次のように -n を付ける方がいいかも知れない。
    それ以降は
    /usr/local/news/bin/tst_out -f -n /var/log/makefeedmap/fj/tst_out.config
    とする。-n はデータの再利用。通常は *.db を作業域 ($dbp2) に移動して、 newsfeeds の方にも flush をして、 次に新しいものを作るように要求するが、それを飛ば して (/var/log/makefeedmap/fj などにある) 古いものをそのまま使う。
    その結果
    /var/log/makefeedmap/fj/tstdata
    (など)に

    Site: bay-noc-news.ki.nu
    Total: 170
    aero.kyushu-u!kuee-news!10
    ayamura-news!netaidnews!36
    のように始まるものが出来ていれば大丈夫
    Total: の行で終っている時は tst_out の中の $cutoff の値を少なくする
    
    (inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

    makefeedmap

    いよいよ図にする時が来た。 上で出来た文字形式の /var/log/makefeedmap/fj/tstdata
    を読んで図を作る。
    makefeedmap -e 自分の機械名 /var/log/makefeedmap/fj/tstdata > /tmp/output.gif として見る。あるいは大きすぎるなら、 makefeedmap -e 自分の機械名 -g 640,400 /var/log/makefeedmap/fj/tstdata > fj-980530.gif とする。(こんどは少し小さ過ぎるけれど)
    makefeedmapのオプション
         -a
              2つのホスト間のフィードに矢印をつけて表示する。
         -e pathhost
              tstを動かしたホストのpathhostを指定する。以降の検索はここ を起点に
              行なわれる。
         -d num
              最大ホップ数を指定する。これより大きなホップ数のホストは無 視され
              る。デフォルトは10ホップ。
         -w num
              横に並べる最大のホスト数を指定する。デフォルトは8ホスト。
         -r num
              ホストを示す円の半径を指定する。デフォルトは20pixel。
         -R num
              ノード(ホスト)が置かれる場所を乱数により適当にずらせる。こ の値が
              大きいほどずれは大きくなる。0だと一直線上に並ぶこと になる。デフォ
              ルトは50pixel。
         -g x,y
              作成されるgifの大きさ(xとy)を指定する。デフォルトは 1200,1000。
         -c
              -eで指定されたpathhostを中心に放射上に配置。
         -h
              ヘルプメッセージの表示。
    
    
    (inn) | What is | 資料 | 材料 | 準備 | 設定 | 個人的変更 | 確認(tst) | newsfeeds | 確認(tst_out) | makefeedmap |

    その他の覚えなど

    makefeedmap を作られた小野さんに感謝しながら、 いくつか複数の情報を集めようと思うと、どうも database の関係などが、仲々理解出来なかった自分にも困ったものだ と思いつつ、この画面を用意して見ました。 お気付の点は、makoto@ki.nu までメールを下さい。

    ちょうどいい図の大きさと、 自動実行については後の課題にします。 とりあえず 6/01 までの分は手動で作成

     cp /var/log/collect-path/japan.* /var/log/makefeedmap/japan
     tst_out -f -n /var/log/makefeedmap/japan/tst_out.config
     tst_out -f -n /var/log/makefeedmap/fj/tst_out.config
     makefeedmap -e bay-noc-news /var/log/makefeedmap/japan/tstdata > /netnews/japan-980601.gif
     makefeedmap -e bay-noc-news /var/log/makefeedmap/fj/tstdata > /netnews/fj-980601.gif
    
    6/02 日分も手で作成した。

    検索機能で makefeedmap で索くと、各地の図に辿り着くことが出来る。 goo | infoseek | altavista

    【tst = collect-path の動作】
      記事の中から Path の行を取出して、
      (今見たら説明(コメント)が独語だぁ)
      Path の情報を 上記 database に書く
      したがって、どこに database を書くかは自分で決め、
      tst-fj 手続き の中に書いてしまうか、
      (いくつも設定するなら) 引数で渡すようにする。
    
    【 tst_out の動作】
    ○ データベースを文字形式にする。 
      $dbp1 → tst_out → $dbp2/tst_data
    
      ここの入力は一つ前で、次のところに出来た database
      $dbp1 = "/var/log/news/" # 上の $db の 一つ上。
      ($db = $dbp1/$dbnam という関係になる)
    
      tst_out を実行すると、
      $dbp1 にある $dbnam.dir, $dbnam.page を $dbp2 に
      移動しその
      database を読んで、Path の情報を文字形式で出力
      する。(出力先 $dbp2/tst_data。中身が読めるはず)
    
      【この項設定のまとめ】
      tst_out の中で以下の五つを設定する
      $dbp1   ( 上の $db = $dbp1/$dbnam: 入力 )
      $dbp2   ( 出力と使用済の database を置く )
      $dbnam  ( 入力 )
      $cflush="/usr/local/news/bin/ctlinnd flush" inn に合わせる
      $hostname
    
    
    ○ 自動実行にする。
    30 23 * * 0 /usr/local/news/local/tst_out >/dev/null 2>&1 
    
    
    2000/07/23 少し見直している inn-2 の path に変更